1. Technical Field
The present invention relates to computer virtualization in general, and in particular to computer virtualization in which computer resources are emulated and simulated in order to offer the possibility of replacing the computing resources by a central computer network in order to offer more efficient computing facilities.
2. Description of Related Art
In the context of computer science, virtualization generally refers to the emulation and simulation of computer resources. While abstraction usually hides details, virtualization is about creating illusions. Thus, with virtualization, instead of hiding the physical characteristics of computing resources from the way in which other systems, applications, or end users interact with the computing resources, the computing resources are usually emulated and simulated in order to behave in a virtualized environment in the same way they would do on native hardware. A virtualized system's interface and resources are mapped onto respective interface and resources of a physical computer system.
With reference now to the drawings, and in particular to FIGS. 1 and 2, there are depicted block diagrams of two basic architectural system structures of a conventional virtualization system. As shown, a virtualization system 10 includes a hypervisor (or a virtual machine monitor) 12 for providing mapping between hardware 14 and a group of guest operating systems (OSs) 16 running on a host computer. Hypervisors 12 can be classified under two types:                a. Type 1 hypervisor runs directly on hardware 14, as shown in FIG. 1. Guest OSs 16 runs on the second level above hardware 14. An example of this kind of hypervisor technology is commercially available under the product name “Xen.”        b. Type 2 hypervisor runs within an operating system environment, as depicted in FIG. 2. Guest OSs 16 are executed on the third level above hardware 14. An example of this kind of hypervisor technology is commercially available under the product name “VMware server.”        
In addition, there are two basic prior art techniques for providing server virtualization, namely, full-virtualization and para-virtualization. Full-virtualization completely virtualizes the hardware infrastructure needed to run an OS and the applications on top of the OS. This virtualized hardware infrastructure is referred to as “virtual machine.” Examples of hypervisor implementations utilizing the full-virtualization approach are VMware hypervisor and Microsoft7 Virtual PC/Server.
Para-virtualization, in contrast, emulates only parts of the hardware infrastructure needed to run an OS and is “transparent” for some (performance-critical) parts, which provides performance gains. An example of hypervisor implementation utilizing the para-virtualization approach is the open source hypervisor Xen.
With respect to the application of virtualization, the following situation can be considered as typical. A data center is assumed to host virtual machine instances on a pool of servers. Due to the fact that current virtualization technologies, such as VMware and Xen, can only exclusively run on a certain “hardware box,” i.e. a computer system or a cluster of computer systems including computational, storage and network resources, a specific amount of hardware resources has to be provided in order to react to changing customer demands and hardware resource requirements (due to changing degrees of utilization of this hardware box).
Let's assume the following scenario. Two different host platforms A and B exist. One is running virtualization technology X and the other virtualization technology Y. While system A running X is under heavy workload, system B using Y is idle at the moment and it is expected to be idle even for a longer time. Thus, in this scenario, it is desirable to balance the workload between system A and system B by transferring some load from A to B. However, such workload transfer between systems is not feasible in prior art.
One idea for balancing the workload would be to convert virtual machine images, in this case, to increase the load of system B and to decrease the load of system A. There are currently several prior art implementations available for converting virtual machine images:
First, there is the VMware Conversion tool. This is a freely available tool for converting older VMware virtual or Microsoft Virtual PC/Server virtual machines into virtual machines being able to run on the latest VMware hypervisor products. From a conceptual perspective, this (one-way) conversion converts virtual machines being based on full-virtualization to virtual machines also being based on full virtualization.
However, the VMware Conversion tool does not allow converting virtual machines capable of running on VMware to virtual machines capable of running on a different hypervisor. For example, the VMware conversion tool does not provide functionality to migrate virtual machines from Xen (as a para-virtualization-based hypervisor) to VMware and vice versa.
Other prior art software projects focus on the migration of a real server to virtual ones. The Virtual Server Migration Toolkit (VSMT) from Microsoft7 can be named as an example. This software makes use of another Microsoft7 product the Automated Deployment Services, to take an image of a physical server, creates the new virtual server, and then deploys the image to the Microsoft7 Virtual Server 2005. In this case, a new image as well as the corresponding metadata is generated based on physical resources which are analyzed and virtualized. The disadvantage of this approach is that it is again only a one-way solution allowing to generate virtual machines being able to run on Microsoft7's Virtual Server software. It does not allow generating virtual machines being able to run on a different hypervisor. Besides that, it does not allow VMware-based virtual machines (being based on a full-virtualization approach) to migrate to Xen-based virtual machines (being based on a para-virtualization approach).
There are other products in the market focusing on the pure conversion of file system images (representing one part of a virtual machine). One example is the image converter being delivered with the qemu Open Source project. The disadvantage of this converter is that it does not take into account the metadata of a virtual machine, which makes the overall conversion incomplete.
Consequently, it would be desirable to provide an improved method for migrating virtual machines between hypervisors.